<?php
namespace app\common\model;

use think\Controller;
use think\Db;
use think\Session;
use think\Request;
use think\Config;
use think\exception\DbException;

class Erp
{
	//构造函数,实例化Oracle 数据库配置文件
	public function __construct()
	{
		$this->connect = Db::connect(Config::get('oracle'));
	}

	/**
     * 获取指定数据表的全部数据
     * @param  string $tableName    数据表的名称
     * @return array
     */
	public function all_list($tableName, $field='*')
	{
		$list = $this->connect->table($tableName)->field($field)->order('ID DESC')->limit(3)->select();

		return $list;
	}

     /**
     * 获取erp上新增的用户同步到Club平台
     * @param  string strtotime    时间戳
     * @return array
    */
    public function erp_add($arr)
    {
        // $arr['LASTTIME']
        // dump($arr);exit;
        $functionNamw = "FN_GETVIPINFO("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";

        // dump("select ".$functionNamw." from dual");exit;

        $list = $this->connect->query("select ".$functionNamw." as rd from dual");
        $res = stream_get_contents($list[0]['RD']);

        return $res;

    }

    /**
     * 同步更新erp上修改过的用户
     * @param  string strtotime    时间戳
     * @return array
    */
    public function erp_modiy($arr)
    {
        // $arr['LASTTIME']
        // dump($arr);exit;
        $functionNamw = "FN_GETVIPINFO("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";

        // dump("select ".$functionNamw." from dual");exit;

        $list = $this->connect->query("select ".$functionNamw." as rd from dual");
        $res = stream_get_contents($list[0]['RD']);

        return $res;

    }



    /**
     * 根据时间戳获取大于该时间戳的用户列表,同步到Club平台
     * @param  string strtotime    时间戳
     * @return array
    */
    public function get_strtotime_desc()
    {
        //注册用户最大的用户注册的时间戳
        // $use_max_create_time = \think\Db::table('d_users')->max('create_at');
        // dump($use_max_create_time);exit;
        // $list = $this->connect->table('c_vip')
            // ->whereTime('CREATIONDATE', '>=', strval($use_max_create_time))
            // ->order('CREATIONDATE ASC')
            // ->limit(50)
            // ->select();

        // return $list;

    }

    /**
     * 获取erp上指定手机用户的余额
     * @param  string strtotime    时间戳
     * @return array
    */
    public function get_user_price($phone)
    {
        //用户金额表：FA_VIPACC
        //通过手机查询用户id
        $user_info = $this->connect->table('c_vip')
            ->alias('v')
            ->where('v.MOBIL', $phone)
            ->join('FA_VIPACC c', 'c.C_VIP_ID = v.ID')
            ->field('v.ID, v.MOBIL, c.AMOUNT')
            ->find();
            
        return $user_info['AMOUNT'];
    }

    /**
    *   日志
    *   content    内容
    *   status    状态：Y/N
    */
    public function add_log($content, $status)
    {
        $data = [
            'content' => $content,
            'status' => $status,
            'create_at' => time()
        ];

        $res = \think\Db::table('d_erp_syn_log')->insert($data);

        return $res;
    }

	/**
     * 会员注册
     * @param  array $arr 数组格式
     * @return array
    */
    public function register($arr=[])
    {
    	
    	$functionNamw = "FN_ADDCHATTOERP("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";

    	settype($functionNamw, 'string');
    	// dump("select ".$functionNamw." as res from dual");exit;
        // $sql = "select ".$functionNamw." as res from dual";
    	$list = $this->connect->query("select ".$functionNamw." as res from dual");


    	return $list;
    }

    /**
     * 审核用户时同步给erp
     * @param  array $arr 数组格式
     * @return array
    */
    public function syn_shenhe($arr =[])
    {
        $functionNamw = "FN_UPCHATTOERP("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";

        settype($functionNamw, 'string');
        
        $res = $this->connect->query("select ".$functionNamw." as res from dual");

        $info = json_decode($res[0]['RES'], 1);

        $this->add_log($info['message'], $info['IFSUCESS']);

        return $info;
    }

    /**
     * 修改用户信息时同步给erp
     * @param  array $arr 数组格式
     * @return array
    */
    public function syn_modify($arr =[])
    {
        $functionNamw = "FN_UPCHATTOERP("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";

        settype($functionNamw, 'string');
        
        $res = $this->connect->query("select ".$functionNamw." as res from dual");

        $info = json_decode($res[0]['RES'], 1);

        $this->add_log($info['message'], $info['IFSUCESS']);

        return $info;
    }

    /**
     * 查询当前用户的贵宾卷
     * @access public
     * @param  array $vip_number 用户的唯一vip卡号
     * @return string $roll_type 查询标识：包含三种：USE,表示已经使用，NOT表示未使用，ALL表示全部
     */
    public function get_user_roll($vip_number, $roll_type='ALL')
    {
        $arr = [
            'VIPCARD' =>$vip_number,
            'FLAG' =>$roll_type
        ];
        // dump($arr);exit;
        // $functionNamw = "fn_getvipchers("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";
        $functionNamw = "FN_GETVIPCHERS("."'".json_encode($arr, JSON_UNESCAPED_UNICODE)."'".")";
        // dump("select ".$functionNamw." as res from dual");exit;
        
        $res = $this->connect->query("select ".$functionNamw." as res from dual");
        $list = json_decode(stream_get_contents($res[0]['RES']), 1);
        // dump($list['item']);exit;

        // $info = json_decode($res[0]['RES'], 1);

        // $this->add_log($info['message'], $info['IFSUCESS']);

        return $list['item'];
    }
}